/*
 * File:   CecProblem.h
 * Author: jcrada
 *
 * Created on 27 May 2011, 9:04 AM
 */

#ifndef ECB_CEC10_CECPROBLEM_H
#define	ECB_CEC10_CECPROBLEM_H

#include "ecb/base/Problem.h"
#include "ecb/base/Properties.h"

namespace ecb {
    namespace cec10 {
        class CecRandom;
        class CecProblem : public Problem {
        protected:
            int _mValue;
            CecRandom* _randomizer;
        public:
            CecProblem(const std::string& id = "", const std::string& name = "",
                    int dimensions = 1000, scalar minimum = -INFINITY,
                    scalar maximum = INFINITY, bool minimization = true,
                    int mValue = 50, CecRandom* randomizer = nullptr);
            virtual ~CecProblem();

            void setMValue(int m);
            int mValue() const;

            void setRandomizer(CecRandom* randomizer);
            CecRandom* randomizer() const;


        };
    }
}

#endif	/* ECB_CEC10_FUNCTION_H */

